package top.lixunda.ecommerce.server.good.service;

import top.lixunda.ecommerce.server.good.api.entity.dto.PageIndexCarouselChangeDTO;
import top.lixunda.ecommerce.server.good.api.entity.dto.PageIndexCarouselInsertDTO;
import top.lixunda.ecommerce.server.good.api.entity.dto.PageIndexFeaturedChangeDTO;
import top.lixunda.ecommerce.server.good.api.entity.dto.PageIndexFeaturedInsertDTO;
import top.lixunda.ecommerce.server.good.api.entity.vo.PageCarouselVO;
import top.lixunda.ecommerce.server.good.api.entity.vo.PageFeaturedVO;

import java.util.List;

/**
 * 首页数据展示获取与设置
 *
 * @author lixunda
 * @version time:2020/3/18 16:34
 */
public interface IPageIndexService {

    /**
     * 获取首页走马灯数据
     *
     * @return PageCarouselVO列表
     */
    List<PageCarouselVO> queryCarouselVO();

    /**
     * 添加保存一条首页的Carousel数据
     *
     * @param pageIndexCarouselInsertDTO 保存数据
     * @return 是否保存成功
     */
    boolean insertIndexCarousel(PageIndexCarouselInsertDTO pageIndexCarouselInsertDTO);

    /**
     * 添加保存一条首页的Carousel数据
     *
     * @param list 保存数据列表
     * @return 是否保存成功
     */
    boolean insertIndexCarouselBatch(List<PageIndexCarouselInsertDTO> list);

    /**
     * 修改首页轮播图数据
     *
     * @param pageIndexCarouselChangeDTO 轮播图数据修改DTO
     * @return 是否修改成功
     */
    boolean changeIndexCarousel(PageIndexCarouselChangeDTO pageIndexCarouselChangeDTO);

    /**
     * 根据id移除数据
     *
     * @param ids 轮播图数据编号列表
     * @return 是否移除成功
     */
    boolean removeIndexCarouselByIds(List<Integer> ids);

    /**
     * 获取首页Featured数据
     *
     * @return PageFeaturedVO列表
     */
    List<PageFeaturedVO> queryFeaturedVO();

    /**
     * 添加保存一条首页的Featured数据
     *
     * @param pageIndexFeaturedInsertDTO 保存数据
     * @return 保存后的数据，为空表示失败
     */
    PageFeaturedVO insertIndexFeatured(PageIndexFeaturedInsertDTO pageIndexFeaturedInsertDTO);

    /**
     * 添加保存多条首页的Featured数据
     *
     * @param list 保存数据列表
     * @return 保存后的数据，为空表示失败
     */
    List<PageFeaturedVO> insertIndexFeaturedBatch(List<PageIndexFeaturedInsertDTO> list);

    /**
     * 修改首页Featured数据
     *
     * @param pageIndexFeaturedChangeDTO Featured数据修改DTO
     * @return 修改后的数据
     */
    PageFeaturedVO changeIndexFeatured(PageIndexFeaturedChangeDTO pageIndexFeaturedChangeDTO);

    /**
     * 根据id移除数据
     *
     * @param ids Featured据编号列表
     * @return 是否移除成功
     */
    boolean removeIndexFeaturedByIds(List<Integer> ids);
}
